perm filename RESPC.F4[NEW,LCS]4 blob
sn#318232 filedate 1977-11-18 generic text, type T, neo UTF8
00100 SUBROUTINE RESPC
00200 COMMON/STF/RSTFAC(8),RSTJ2 /POSI/STFF(8),JJ2,JPQ
00300 1 /IPG/IPG,JPG,BRACK(0/7),RSTNUM(8),RPSZ(8),RHGT(8),
00400 1 RCLEF(0/7) /IVV/IV(1)
00500 COMMON RS,JA,REST,J2,RQ(18),JX,PR,LX,RDIS
00600 C ORDER OF COMMON BLOCKS **MUST** STAY AS IS!
00700 COMMON/XRN/RN(1) /SF/KL,RT,KP,STFSZ,NAMX
00800 1 /PTR/KWDS(1)/LLL/L,LL,I,IX/XXX/LK,LP,JY /JN/J,N
00900 C INCREASE DIMENSION OF KWDS FOR VERY FULL PAGES.
01000 DIMENSION NRD(100),MM(1500),NN(1500),BARS(509),E(100),F(100),
01100 1 G(100),H(100),KPN(1),HH(100),HHH(100),DUMMY(100),PGTRN(500)
01200 INTEGER DUMMY
01300 COMMON /PX/PN(1) /Q/Q(1)
01400 1 /RCLF/KK,CLEF,KW,ITEM,RSTAFF,SN,YN,RNAM,RNAM2,RNAM3
01500 1 /KBAR/KBAR(1) /RSP/KNM(10),ENDLN,KQ,NAME,NMPG,SPCNT
01600 DATA FIB/.8/ ,RSPC/28./,PGNUM/1.6/,RNMHT/16.0/,RNMSZ/1.2/
01700 1 ,RLTRSZ/1.0/,SPCPG/2.7/,SPCRX/1.5/
01800 C RSPC=28 SEEMS TO BE ARBITRARY. SPCRX USED IN RHYTH RESPACE.
01900 EQUIVALENCE (RQ(2),R4),(R5,RQ(3)),(R6,RQ(4)),(R7,RQ(5)),(MM,RN)
02000 1,(NN,RN(501)),(KPN,PN),(KS,RS),(BARS,KBAR(4)),(HHH,RN(2250))
02100 1,(R8,RQ(6)),(R9,RQ(7)),(RQ(10),XLFT),(KBR,KBAR),(T,KBAR(2))
02200 1,(LASTNM,KBAR(3)),(LCNT,IV(45)),(NDPY,IV(46)),(HH,RN(1250))
02300 1,(E,RN(1000)),(F,RN(2500)),(G,RN(2700)),(H,RN(2850))
02400 1,(DUMMY,RN(1400)),(PGTRN(1),KBAR(516))
02500 C RQ(2) IS R4, RQ(3) IS R5 ETC.
02600
02700 IF(NMPG.NE.'PAGEA')GO TO 2000
02800 NPZ='PAGEZ'
02900 RNEXT=0
03000 2000 SPCNT=1.0
03100 JX=0
03200 JCEN=0
03300 C FLAG FOR CENTERED RESTS.
03400 XT=0
03500 PX=0
03600 CALL SHFT1(KQ)
03700 KK=L
03800 CC TYPE 3001,L
03900 C DELETES EXTRA BAR LINES, ETC.
04000 IF(IPG)CALL RESTS
04100 C??? IF(N)RETURN
04200 C N IS NEG., ONLY RESTS WERE ON THIS LINE. (WHAT ABOUT LAST LINE???)
04300 C FROM NOW ON ALL CODES #-1 ARE IGNORED, RESTS HAVE BEEN COMBINED.
04400 CALL SHIFT
04500 C L=NUMBER OF ITEMS FOR RHY RECONS.
04600 JJ2=L+2
04700 C FOR WDCNT IN .PAG FILE
04800 N=0
04900 S=-100
05000 R=0
05100 KCLEF=0
05200 NOGRCE=-1
05300 C GRACE NOTE FLAG
05400
05500 DO 601 K=1,L
05600 R=CODEN(KPN,K,Q,J)
05700 RZ=Q(J)
05800 CX J=KPN(K)
05900 CC N=N+1
06000 CC NN(N)=0
06100 CC MM(N)=J+3
06200 CALL MMNN(3)
06300 CX R=Q(J+1)
06400 801 IF(R.NE.1)GO TO 2801
06500 IF(RZ.LT.7)GO TO 601
06600 IF(Q(J+9).GT..05)GO TO 702
06700 IF(Q(J+9).EQ.0)GO TO 601
06800 CC IF(Q(J+8).EQ.1000)GO TO 601
06900 C SKIP GRACE NOTE, OR NOTES WITHOUT RHY., OR .LT.1/88 NOTES.
07000 NOGRCE=0
07100 GO TO 601
07200 2801 IF(R.NE.2)GO TO 1801
07300 IF(RZ.LT.5)GO TO 601
07400 IF(IPG)GO TO 1801
07500 IF(RZ.GE.6)JCEN=-1
07600 CC IF(RZ.GE.6)GO TO 601
07700 C MUST ALIGN REST WITH FIRST RHYTH ON OTHER STAFF.
07800 C THIS WILL IGNORE WHOLE RESTS IN CENTER OF MEASURE.
07900 1801 IF(R.LT.4)GO TO 702
08000 IF(R.EQ.17)GO TO 1702
08100 IF(R.EQ.18)GO TO 1702
08200 IF(R.LE.7)GO TO 30
08300 IF(R.NE.44)GO TO 601
08400 IF(RZ.EQ.2)GO TO 601
08500 C RZ=2= BAR LINE ON UPPER STAFF
08600 IF(Q(J+6).EQ.0)GO TO 601
08700 IF(Q(J+5).EQ.0)GO TO 601
08800 C GETS LEFT END OF LINES, CRESC., DASHES.
08900 GO TO 604
09000 30 IF(R.NE.7)GO TO 605
09100 IF(RZ.LT.5)GO TO 604
09200 C JUMP FOR STANDARD TRILL
09300 RS=Q(J+7)
09400 IF(RS.EQ.1)GO TO 604
09500 IF(ABS(RS).GE.3)GO TO 604
09600 C JUMP FOR 8VA, 15MA, ELSE THIS IS A PEDAL MARK WITHOUT LINE.
09700 GO TO 601
09800 605 IF(R.NE.4)GO TO 604
09900 IF(RZ.LE.3)GO TO 702
10000 C JUMP IF IT IS A BAR LINE
10100 CC IF(RZ.LT.4)GO TO 601
10200 IF(Q(J+6).NE.0)GO TO 604
10300 C GO GET OTHER POS OF LINE
10400 GO TO 601
10500 1702 IF(Q(J+4).NE.0)GO TO 601
10600 IF(Q(J+2).NE.0)GO TO 601
10700 C IGNORE METER NOT IN VERT. POS. 0. (PUT IN OTHER PROGS!)
10800 702 NN(N)=R
10900 GO TO 601
11000 C NEXT FOR MULTIPOSITION ITEMS: LINES, SLURS, BEAMS, TRILL, 8VA
11100 604 CALL MMNN(6)
11200 C NEXT POS2, 3 AND 4 OF CERTAIN ITEMS
11300 IF(R.NE.6)GO TO 601
11400 C NEXT FOR BEAMS
11500 IF(RZ.LT.8)GO TO 608
11600 IF(Q(J+10).EQ.0)GO TO 608
11700 IF(Q(J+8))GO TO 608
11800 C P8<0 = P8=P3 (PARTIAL BEAM TO LEFT)
11900 IF(Q(J+7).GT.0)CALL MMNN(8)
12000 C NEXT SHIFTS P8 OF COMPOSITE BEAMS
12100 608 IF(RZ.LT.7)GO TO 601
12200 IF(Q(J+7))GO TO 688
12300 C P7 IS NEG FOR TREMOLO
12400 IF(Q(J+8).EQ.0)GO TO 601
12500 C P8 NEG OR POS = POS3 IN P9; P8=0= P9 IS NUM.
12600 688 IF(Q(J+9).GT.0)CALL MMNN(9)
12700 C FOUND A POS. IN P9
12800 601 CONTINUE
12900
13000 C NEXT SORTS THE POINTS
13100 6000 J=1
13200 610 IF(Q(MM(J)).LE.Q(MM(J+1)))GO TO 710
13300 CALL EXCHG(MM(J),NN(J))
13400 C ABOVE EXCHGS --(J) AND --(J+1)
13500 IF(J.EQ.1)GO TO 710
13600 J=J-1
13700 GO TO 610
13800 710 J=J+1
13900 IF(J.LT.N)GO TO 610
14000 C NOW ALL SORTED
14100 CALL FNDEND(R)
14200 CALL SHFTQ(R)
14300 C SHIFTS TO PROPER HORIZ. POS.
14400 IF(IPG)CALL RESTP
14500 C RESTP COMBINES LEFTOVER NUMBERED BARS OF RESTS.
14600 IF(N.LE.0)GO TO 122
14700 C N IS NEG IF ONLY RESTS ON THIS LINE. GO BACK.
14800
14900 DO 119 K=1,150
15000 119 HH(K)=0
15100 C HH ARRAY WILL HOLD FINAL COMPOSITE.
15200 G(1)=0
15300 E(1)=0
15400 F(1)=0
15500 RN(1500)=0
15600 RN(2500)=0
15700 ST=0
15800 C ST=STAFF NUM, T=TOTAL RHYTHMS, J=CNTR OF MAIN POS. ARRAY
15900 C JJ=CNTR FOR 2ND POS. ARRAY, JJJ=CNTR FOR 3RD.
16000 KE=0
16100 J=1000
16200 933 JJ=1500
16300 JJJ=2000
16400 T=0
16500 M=0
16600 A=0
16700 B=0
16800
16900 DO 33 K=1,N
17000 IF(NORH(KK))GO TO 33
17100 CC KK=NN(K)
17200 CC IF(KK.EQ.0)GO TO 33
17300 CC IF(KK.EQ.4)GO TO 2133
17400 CC IF(KK.EQ.17)GO TO 2133
17500 C SKIP OVER STAFF # TRAP WITH BARS, METER, KSIG.
17600 CC IF(KK.EQ.18)GO TO 2133
17700 CC IF(KK.GT.2)GO TO 33
17800 2133 LL=MM(K)-3
17900 IF(KK.LE.2)GO TO 1133
18000 RH=.01
18100 C RHYTHMIC VALUE OF BARLINE, METER, KSIG
18200 CCC IF(KK.NE.4)RH=.6
18300 GO TO 3133
18400 1133 IF(Q(LL+2).NE.ST)GO TO 33
18500 C JUMP IF NOT ON RIGHT STAFF
18600 RA=9
18700 IF(KK.EQ.2)RA=7
18800 IF(Q(LL).LT.RA-2)GO TO 33
18900 C JUMP IF WDCNT IS TOO SHORT
19000 RH=Q(LL+IFIX(RA))
19100 IF(RH.EQ.0)GO TO 33
19200 3133 RZ=Q(LL+3)
19300 IF(ZERO(RZ,A).EQ.0)GO TO 133
19400 C JUMP IF THIS NOTE IN SAME POS. AS LAST ONE.
19500 RRH=RH
19600 C SAVE RHYTH TO CHECK WITH OTHER IN SAME POS.
19700 TT=T
19800 C SAVE TOTAL RHYTHM BEFORE THIS NOTE.
19900 J=J+1
20000 C UPDATE COUNTER IN POSITION ARRAY
20100 T=T+RH
20200 C ADD TO TOTAL RHYTHM
20300 RN(J)=T
20400 A=Q(LL+3)
20500 C SAVE POS. OF THIS NOTE.
20600 GO TO 33
20700 133 IF(RH.EQ.RHH)GO TO 33
20800 C IGNORE 2ND RHYTH IF SAME AS FIRST
20900 IF(ZERO(RZ,B).EQ.0)GO TO 333
21000 C JUMP IF A THIRD DIFFERENT RHYTHM IN SAME POS. (THIS IS THE LIMIT!)
21100 TTT=TT
21200 C SAVE TOTAL RHYTHM TO THIS POINT.
21300 TT=TT+RH
21400 JJ=JJ+1
21500 C UPDATE COUNTER FOR 2ND ARRAY
21600 RN(JJ)=TT
21700 RRRH=RH
21800 B=A
21900 GO TO 33
22000 333 IF(RH.EQ.RRRH)GO TO 33
22100 TTT=TTT+RH
22200 JJJ=JJJ+1
22300 RN(JJJ)=TTT
22400 33 CONTINUE
22500 C NOW COMPARE THIS WITH BASIC RHYTHM ARRAY (STARTS AT RN(1001)
22600 IF(ST.NE.0)GO TO 733
22700 KE=J-999
22800 C TOTAL NUM OF RHYTHMS ON STAFF1.
22900 CC IF(JPG.EQ.0)GO TO 2233
23000 IF(JPG.LE.1)GO TO 2233
23100 C JPG=0=PARTS; =1=PAGE, 1 STAFF
23200 C JUMP IF ONLY ONE STAFF
23300 733 KF=J-2499
23400 C KF=NUM OF RHYTHMS ON NEXT STAFF.
23500 ST=ST+1
23600 IF(ST.GT.1)GO TO 833
23700 C JUMP IF ALL STAVES HAVE BEEN READ.
23800 1233 J=2500
23900 GO TO 933
24000 833 IF(J.NE.2500)GO TO 1533
24100 C JUMP IF THERE IS ONLY ONE LINE OF RHYTHM
24200 C NOW LINE ONE STARTS AT RN(1001), LINE 2 AT RN(2501)
24300
24400 2233 CALL RLOOP(HH,E,KE)
24500 C FOR SINGLE STAFF OF RHYTHM
24600 KL=KE
24700 GO TO 1333
24800 1533 K=1
24900 L=1
25000 M=0
25100 19 KK=K
25200 LL=L
25300 1 SM=10000
25400 K=K+1
25500 IF(K.GT.KE)GO TO 10
25600 4 L=L+1
25700 Y=F(L)
25800 B=Y-F(L-1)
25900 IF(B.LT.SM)SM=B
26000 2 X=E(K)
26100 A=X-E(K-1)
26200 C A AND B HAVE TRUE DURATIONS NOW
26300 IF(A.LT.SM)SM=A
26400 C SM = SMALLEST RHYTH VALUE BEFORE NEXT CONTACT
26500 IF(ZERO(X,Y).EQ.0)GO TO 3
26600 C JUMP IF EQUAL RHYTHS
26700 IF(X.GT.Y)GO TO 4
26800 K=K+1
26900 C STEP FORWARD UNTIL X IS .GT. Y
27000 GO TO 2
27100 3 IF(K.NE.KK+1)GO TO 13
27200 IF(L.NE.LL+1)GO TO 14
27300 M=M+1
27400 G(M)=E(KK)
27500 GO TO 19
27600 13 IF(L.NE.LL+1)GO TO 15
27700 DO 16 J=KK,K-1
27800 M=M+1
27900 16 G(M)=E(J)
28000 GO TO 19
28100 14 DO 17 J=LL,L-1
28200 M=M+1
28300 17 G(M)=F(J)
28400 GO TO 19
28500 15 XM=SM-.001
28600 M=M+1
28700 P=E(KK)
28800 G(M)=P
28900 7 KK=KK+1
29000 LL=LL+1
29100 YM=SM*1.5
29200 C THIS COULD BE *2 (NOTE /16/8./ VS. /6/12/ )
29300 S=P
29400 T=P
29500 27 A=E(KK)
29600 B=F(LL)
29700 IF(ZERO(A,B).EQ.0)GO TO 19
29800 X=ZERO(A,P)
29900 Y=ZERO(B,P)
30000 C FUNCT. ZERO: ZERO=B-P, IF(ABS(ZERO).LT..01)ZERO=0
30100 S=E(KK-1)
30200 T=F(LL-1)
30300 9 IF(A-S.LT.X-.01)X=ZERO(A,S)
30400 IF(B-T.LT.Y-.01)Y=ZERO(B,T)
30500 IF(A.GT.B+.01)GO TO 8
30600 B=A
30700 KK=KK+1
30800 62 IF(X.GT.YM)GO TO 5
30900 IF(X.EQ.0)GO TO 27
31000 P=P+SM
31100 25 M=M+1
31200 G(M)=P
31300 GO TO 27
31400 5 P=P+SM
31500 IF(P)GO TO 203
31600 C IF(P)ERROR
31700 IF(P.LT.B-.01)GO TO 5
31800 GO TO 25
31900 8 X=Y
32000 LL=LL+1
32100 GO TO 62
32200 10 M=M+1
32300 G(M)=E(KE)
32400 CC TYPE 410,(E(K),K=1,KE)
32500 CC TYPE 410,(F(K),K=1,KF)
32600 CC TYPE 410,(G(K),K=1,M)
32700 CBCB WRITE(21,410)(E(K),K=1,KE)
32800 CB WRITE(21,410)(F(K),K=1,KF)
32900 CB WRITE(21,410)(G(K),K=1,M)
33000 410 FORMAT(10F7.2)
33100 C NEXT SECTION SETS UP COMPLETE RHYTH COMPOSITE(NEGS. OR NON-SPC VALS.)
33200 1033 JJ=1
33300 H(1)=0
33400 J=1
33500 K=2
33600 L=2
33700 511 IF(J.EQ.M)GO TO 911
33800 J=J+1
33900 X=G(J)
34000 1211 A=E(K)
34100 B=F(L)
34200 Y=ZERO(X,A)
34300 Z=ZERO(X,B)
34400 IF(A-B.GT..01)GO TO 1111
34500 IF(Y.EQ.0)GO TO 1311
34600 IF(X.LT.A-.01)GO TO 1111
34700 K=K+1
34800 1411 JJ=JJ+1
34900 H(JJ)=-A
35000 GO TO 1211
35100 1111 IF(Z.EQ.0)GO TO 1311
35200 IF(X.LT.B-.01)GO TO 1311
35300 L=L+1
35400 A=B
35500 GO TO 1411
35600
35700 1311 JJ=JJ+1
35800 H(JJ)=X
35900 IF(Y.EQ.0)GO TO 611
36000 IF(Z.EQ.0)GO TO 711
36100 IF(ZERO(A,B).EQ.0)GO TO 511
36200 P=A
36300 IF(P.GT.B+.01)GO TO 811
36400 IF(P.GT.X+.01)GO TO 511
36500 K=K+1
36600 GO TO 1011
36700 811 P=B
36800 IF(P.GT.X+.01)GO TO 511
36900 L=L+1
37000 1011 JJ=JJ+1
37100 H(JJ)=-P
37200 C NON-SPACED RHYTHS ARE NEG.
37300 GO TO 511
37400 611 K=K+1
37500 IF(Z.GT.0)GO TO 511
37600 711 L=L+1
37700 GO TO 511
37800 911 IF(HH(2).EQ.0)GO TO 2011
37900 K=2
38000 J=2
38100 L=1
38200 HHH(1)=0
38300 1511 IF(J.GT.JJ)GO TO 1811
38400 P=H(J)
38500 A=ABS(P)
38600 B=ABS(HH(K))
38700 IF(ZERO(B,A).EQ.0)GO TO 1611
38800 IF(A.GT.B)GO TO 1711
38900 J=J+1
39000 GO TO 1911
39100 1711 P=HH(K)
39200 GO TO 2211
39300 1611 J=J+1
39400 2211 K=K+1
39500 1911 L=L+1
39600 HHH(L)=P
39700 GO TO 1511
39800 2011 CALL RLOOP(HH,H,JJ)
39900 KL=JJ
40000 GO TO 2111
40100 1811 CALL RLOOP(HH,HHH,L)
40200 KL=L
40300 2111 IF(ST.GE.JPG)GO TO 1333
40400 CALL RLOOP(E,G,M)
40500 KE=M
40600 C GO WAY BACK AND READ ANOTHER LINE.
40700 GO TO 1233
40800 1333 E(1)=0
40900 GO TO 2333
41000 TYPE 410,(HH(K),K=1,KL)
41100 WRITE(21,410)(HH(K),K=1,KL)
41200 2333 JD=1
41300 C JD IS COUNTER FOR DUMMY POSITIONS.
41400 DUMMY(1)=1
41500 ST=0
41600 183 B=0
41700 LL=2
41800
41900 DO 181 K=1,N
42000 IF(NORH(L))GO TO 181
42100 C LOOK FOR DUMMY RHYTHMS.
42200 IF(L.LE.2)GO TO 2184
42300 RZ=.01
42400 C RHYTHMIC VALUE OF BAR, METER, KSIG. CHANGED TO ABS. SIZE LATER.
42500 GO TO 1184
42600 2184 LF=MM(K)
42700 IF(Q(LF-1).NE.ST)GO TO 181
42800 C FOUND RHYTH ON RIGHT STAFF (LF PNTS TO PARAM 3)
42900 J=6
43000 IF(L.EQ.2)J=4
43100 RZ=Q(LF+J)
43200 1184 B=B+RZ
43300 184 V=ABS(HH(LL))
43400 IF(ZERO(B,V).GT.0)GO TO 182
43500 C FOUND RHYTH MATCH
43600 JD=JD+1
43700 DUMMY(JD)=LL
43800 LL=LL+1
43900 GO TO 181
44000 182 IF(B.LT.V-.01)GO TO 181
44100 LL=LL+1
44200 GO TO 184
44300 181 CONTINUE
44400 ST=ST+1
44500 IF(ST.LT.JPG)GO TO 183
44600
44700 C NEXT SORT DUMMY ARRAY
44800 J=0
44900 185 DO 186 K=2,JD
45000 IF(DUMMY(K).NE.DUMMY(K-1))GO TO 187
45100 DO 188 LL=K,JD
45200 188 DUMMY(LL-1)=DUMMY(LL)
45300 JD=JD-1
45400 GO TO 185
45500 187 IF(DUMMY(K).GT.DUMMY(K-1))GO TO 186
45600 CALL EXCH(DUMMY(K),DUMMY(K-1))
45700 GO TO 185
45800 186 CONTINUE
45900 C NOW DUMMY CONTAINS ALL NON-DUMMY RHYTHS!!!
46000 PX=0
46100 LF=0
46200 K=1
46300 V=0
46400
46500 81 K=K+1
46600 IF(K.GT.KL)GO TO 1433
46700 B=HH(K)
46800 A=B-V
46900 V=B
47000 IF(V)GO TO 82
47100 85 W=V
47200 IF(A.GT.0.01)GO TO 89
47300 C .GT. BECAUSE OF ROUND-OFF ERROR
47400 T=5
47500 IF(HH(K+1)-V.LE..01)T=2
47600 PX=PX+T
47700 C THIS FOR BARS, KSIG, METER
47800 GO TO 189
47900 89 PX=PX+PFIB(A)
48000 189 E(K)=PX
48100 IF(LF.NE.0)GO TO 86
48200 GO TO 81
48300 82 LF=K
48400 83 K=K+1
48500 V=HH(K)
48600 IF(V)GO TO 83
48700 A=V-W
48800 GO TO 85
48900 86 LL=LF-1
49000 D=E(K)-E(LL)
49100 87 S=-HH(LF)-HH(LL)
49200 T=HH(K)-HH(LL)
49300 T=S/T
49400 C THIS FINDS POS OF NON-IMPORTANT RHY BETWEEN IMPORTANT ONES.
49500 E(LF)=E(LL)+D*T
49600 LF=LF+1
49700 IF(LF.NE.K)GO TO 87
49800 LF=0
49900 GO TO 81
50000
50100 1433 GO TO 2433
50200 TYPE 410,(E(K),K=1,KL)
50300 WRITE(21,410)(E(K),K=1,KL)
50400 C 5 IS SPACE AFTER 1ST BARLINE
50500 2433 R8=RNEXT
50600 C POS OF 1ST BAR = END OF PREV. LINE
50700 IF(ENDLN.EQ.0)RNEXT=9
50800 C MAKES ROOM FOR 1ST CLEF.
50900 KL=KL-1
51000 J=0
51100 R5=0
51200 KK=1
51300 JD=1
51400 W=0
51500 LF=0
51600
51700 DO 80 K=1,N
51800 IF(NORH(L))GO TO 80
51900 A=Q(MM(K))
52000 IF(ZERO(A,W).EQ.0)GO TO 80
52100 C SKIP IF SAME POS OF NOTE OR REST.
52200 W=A
52300 R7=R8
52400 190 J=J+1
52500 IF(J.LE.KL)GO TO 290
52600 203 FORMAT(' FOUND CENTERED WHOLE REST!')
52700 LL=0
52800 IF(JCEN.GE.0)GO TO 120
52900 TYPE 203
53000 GO TO 121
53100 120 W=LL
53200 A=0
53300 DO 124 K=1,N
53400 LF=NN(K)
53500 IF(LF.GT.2)GO TO 124
53600 IF(LF.EQ.0)GO TO 124
53700 KE=MM(K)
53800 IF(Q(KE-1).NE.W)GO TO 124
53900 C ADD UP RHYTHMIC VALUES ON EACH SEPARATE LINE.
54000 JD=6
54100 IF(LF.EQ.2)JD=4
54200 A=A+Q(KE+JD)
54300 124 CONTINUE
54400 TYPE 123,LL,A
54500 LL=LL+1
54600 IF(LL.LT.JPG)GO TO 120
54700 123 FORMAT(' STF',I2,' =',F7.3,' QTRS')
54800 121 PAUSE' RHYTHM MISMATCH'
54900 GO TO 90
55000 290 IF(DUMMY(JD).NE.J)GO TO 190
55100 JD=JD+1
55200 90 R8=RNEXT+E(J)
55300 R4=R5
55400 R5=A
55500 X=(R8-R7)/(R5-R4)
55600 S=R7-R4*X
55700 DO 91 L=KK,K
55800 LL=MM(L)
55900 91 Q(LL)=S+X*Q(LL)
56000 KK=K+1
56100 80 CONTINUE
56200
56300 IF(KK.GT.K)GO TO 180
56400 C THIS FOR ITEMS BEYOND LAST IMPORTANT ITEM.
56500 R7=Q(LL)-R5
56600 C R7=NEW POS. OF LAST IMPORTANT ITEM. R5=OLD POS.
56700 DO 280 L=KK,K
56800 LL=MM(L)
56900 280 Q(LL)=R7+Q(LL)
57000 180 JJ=JJ2-2
57100 L=JJ2
57200 M=0
57300 C FLAG FOR REST AT START OF LINE
57400
57410 V=0
57420 ACCI=0
57500 DO 12 J=1,JJ
57600 R=CODEN(KPN,J,Q,LA)
57700 CC IF(CODEN(KPN,J,Q,LA).NE.4)GO TO 12
57800 IF(R.EQ.4)GO TO 680
57900 IF(M)GO TO 780
58000 IF(R.NE.2)GO TO 780
58100 IF(KBR.EQ.0)GO TO 12
58200 C LOOK FOR RESTS AT FRONT OF LINE.
58300 X=0
58400 CALL TURN(J,JJ,1,X)
58500 PGTRN(KBR)=PGTRN(KBR)+X
58600 M=-1
58700 780 IF(R.NE.1)GO TO 12
58710 IF(V.NE.Q(LA+3))GO TO 782
58720 IF(JACC)GO TO 781
58730 782 IF(AMOD(Q(LA+5),10.0).EQ.0)GO TO 781
58740 JACC=-1
58750 ACCI=ACCI+.5
58760 V=Q(LA+3)
58800 781 M=-1
58900 IF(NOGRCE)GO TO 12
59000 C NEXT TO GIVE EQUAL SPACE FOR EVERY GRACE NOTE
59100 C FOUND A NOTE
59200 IF(Q(LA+9).GT.0.05)GO TO 12
59300 C JUMP IF NOT A GRACE NOTE
59400 R=Q(LA+2)
59500 C THE STAFF NUM.
59600 DO 580 LF=J+1,JJ
59700 IF(CODEN(KPN,LF,Q,JD).NE.1)GO TO 580
59800 IF(Q(JD+2).NE.R)GO TO 580
59900 IF(Q(JD).LT.7)GO TO 580
60000 IF(Q(JD+9).EQ.0)GO TO 580
60100 C CHORD NOTE
60200 R4=Q(LA+3)
60300 CC R4=Q(LA+3)-1
60400 R5=Q(JD+3)
60500 C THE STAFF # IS IN R2
60600 R8=RSTFAC(IFIX(R2+1))+.5
60700 IF(Q(JD+4).LT.80)R8=R8*2
60800 C INSURES SPACE BETWEEN GRACE NOTE AND NEXT NOTE
60900 R8=R5-R8
61000 CC R8=R5-R8-1
61100 CCC IF(R4.EQ.R5)GO TO 12
61200 IF(R4.NE.R5)GO TO 480
61300 C GRACE NOTE AT START OF LINE ***** FIX THIS????
61400 DO 880 KE=1,LF-1
61500 880 Q(KPN(KE)+3)=R8
61600 C MOVE THE GRACE NOTE, AND OTHER STUFF, TO LEFT.
61700 GO TO 12
61800 480 R2=Q(LA+2)
61900 R9=R5
62000 CALL PTMOVE(Q,KPN)
62100 CC TYPE 9999,Q(J+3),Q(JD+3)
62200 CC9999 FORMAT(2F)
62300 GO TO 12
62400 580 CONTINUE
62500 GO TO 12
62600 C ABOVE FOR GRACE NOTE SPACING.
62700 680 KBR=KBR+1
62800 C BAR LINE COUNTER
62900 T=Q(LA+3)
63000 C TOTAL SPACE
63100 X=0
63200 CALL TURN(J-1,1,-1,X)
63300 CALL TURN(J+1,JJ,1,X)
63400 222 PGTRN(KBR)=X
63500 C FINDS PAGE-TURN POSSIBILITIES
63600 BARS(KBR)=T-RNEXT+ACCI
63700 C SIZE OF THIS MEASURE + .5*ACCIDENTALS
63710 ACCI=0
63800 K=J
63900 RNEXT=T
64000 12 CONTINUE
64100
64200 IF(K.NE.JJ)RNEXT=Q(KPN(JJ)+3)
64300 RNEXT=RNEXT+3
64400 JJ2=L
64500 C JJ2 GETS WIPED OUT IN PTMOVE, SO GET IT BACK HERE
64600 380 LCNT=0
64700 NDPY=0
64800 C JJ2 IS END OF PNTR DATA
64900 JPQ=KPN(JJ2-1)+1
65000 CALL PUTEXT(NMPG,'PAG')
65100 CALL EXTOUT(RSTFAC,128)
65200 CALL EXTOUT(PN,JJ2)
65300 CALL EXTOUT(Q,JPQ)
65400 CALL FINEXT
65500
65600 LASTNM=NMPG
65700 NMPG=NMPG+2
65800 IF(NMPG.LE.NPZ)GO TO 122
65900 C WILL GO FROM PAGEA TO PAGFZ (52) ADD TO THIS!!
66000 NMPG='PAGFA'
66100 NPZ=NPZ+256
66200 CZ122 KNM(1)=KNM(1)+2
66300 122 ENDLN=RNEXT
66400 END